﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using formatacao;

namespace WindowsFormsApplication2
{
    //Desenvolvido e implementado por Matheus Bernardelli de Moraes
    class Regra1 : Regras
    {
        //public string[,] priMatriz;


        public /*string[,]*/void  getMatriz(string[] lines, string[,] priMatriz, int linha)
        {
            //priMatriz = new string[lines.Length, 95];
            //priMatriz = new string[1,1];
            string troca;
            int coLines = 0; //341
            StringBuilder auxTroca = new StringBuilder();
            format formatar = new format();


            
                for (int coluna = 0; coluna < 95; coluna++)
                {
                    switch (coluna)
                    {
                        case 0:
                            //Tipo de Registro
                            troca = lines[linha][coluna].ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 1:
                            //Controle Sequencial de Gravação
                            for (coLines = 1; coLines <= 12; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 8:
                            //Identificador da Conta Única
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 37; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 9:
                            //Data de Vencimento
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 45; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();                                                    
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;

                        case 10:
                            //Data de Emissão
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 53; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;
                        case 11:
                            //Identificador Único do Recurso (NRC)
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 78; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 12:
                            //CNL do Recurso em Referência
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 83; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 13:
                            //Nome da Localidade
                             auxTroca.Remove(0, auxTroca.Length);

                             for (; coLines <= 108; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 14:
                            //Campo: DDD
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 110; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 15:
                            // Campo: Número do Telefone
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 120; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 16:
                            // Campo: Tipo de Serviço
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 124; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 17:
                            // Campo: Descrição do Tipo de Serviço ( Telefone )
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 159; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 18:
                            // Campo: Característica do Recurso
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 174; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 19:
                            // Campo: Degrau do Recurso
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 176; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 20:
                            // Campo: Velocidade do Recurso
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 181; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 21:
                            // Campo: Unidade da Velocidade do Recurso
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 185; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 22:
                            // Campo: Início do Período da Assinatura
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 193; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;
                        case 23:
                            // Campo: Fim do Período da Assinatura
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 201; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;
                        case 24:
                            // Campo: Início do Período do Serviço Medido
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 209; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 25:
                            // Campo: Fim do Período do Serviço Medido
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 217; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 26:
                            // Campo: Unidade de Consumo
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 222; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 27:
                            // Campo: Quantidade de Consumo (Pulsos)
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 229; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 28:
                            // Campo: Sinal Valor Consumo
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 230; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 29:
                            // Campo: Valor Consumo
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 243; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();                                  
                            
                            priMatriz[linha, coluna] = formatar.deci(troca,2);
                            break;
                        case 30:
                            // Campo: Sinal Assinatura
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 244; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 31:
                            // Campo: Valor Assinatura
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 257; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.deci(troca,2);
                            break;
                        case 32:
                            // Campo: Alíquota (Percentual)
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 259; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 33:
                            // Campo: Sinal ICMS
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 260; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 34:
                            // Campo: Valor ICMS
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 273; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.deci(troca,2);
                            break;
                        case 35:
                            // Campo: Sinal Valor Total de Outros Impostos
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 274; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 36:
                            // Campo: Valor Total de Impostos
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 287; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.deci(troca,2);
                            break;  
                        case 37:
                            // Campo: Número da Nota Fiscal
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 299; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 38:
                            // Campo: Sinal Valor da Conta
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 300; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        case 39:
                            // Campo: Valor da Conta
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 313; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();                            
                            priMatriz[linha, coluna] = formatar.deci(troca,2);
                            break;
                        //case 92:
                        //    // Campo: Filler
                        //    auxTroca.Remove(0, auxTroca.Length);

                        //    for (; coLines <= 328; coLines++) 
                        //    {
                        //        troca = lines[linha][coLines].ToString();
                        //        auxTroca.Append(troca);
                        //    }

                        //    troca = auxTroca.ToString();
                        //    priMatriz[linha, coluna] = troca;
                        //    break; 

                        default:
                            priMatriz[linha, coluna] = null;
                            break;

                    }

                }
            
        }
    }
}